Introduzione a PyTorch: perché i tensori contano
PyTorch è un framework open source altamente flessibile e dinamico apprezzato per la ricerca in ambito deep learning e lo sviluppo rapido di prototipi. Al suo centro si trova il tensore che rappresenta la struttura dati fondamentale. Si tratta di un array multidimensionale progettato per gestire in modo efficiente le operazioni numeriche richieste dai modelli di deep learning, supportando automaticamenteaccelerazione GPU automaticamente.
1. Comprendere la struttura del tensore
Ogni input, output e parametro del modello in PyTorch è racchiuso in un tensore. Svolgono lo stesso ruolo degli array NumPy ma sono ottimizzati per l'elaborazione su hardware specializzato comeGPU, rendendoli molto più efficienti per le operazioni di algebra lineare su larga scala richieste dai reti neurali.
Proprietà chiave che definiscono il tensore:
- Forma: Definisce le dimensioni dei dati, espressa come una tupla (ad esempio, $4 \times 32 \times 32$ per un batch di immagini).
- Tipo: Specifica il tipo numerico degli elementi memorizzati (ad esempio,
torch.float32per i pesi del modello,torch.int64per l'indicizzazione). - Dispositivo: Indica la posizione fisica dell'hardware: tipicamente
'cpu'o'cuda'(GPU NVIDIA).
requires_grad=True sia impostata, consentendo un calcolo semplice dei gradienti durante la retropropagazione.Esegui il codice per ispezionare i tensori attivi
Le dimensioni interne devono corrispondere, quindi $F$ deve essere $(1, 10)$. Poi $(1, 10) @ (10, 5) \rightarrow (1, 5)$.
Codice:
F_new = F.unsqueeze(0) oF_new = F.view(1, -1)L'operazione è una moltiplicazione matriciale semplice.
Codice:
output = F_new @ W ooutput = torch.matmul(F_new, W)Usa il metodo
view oreshape metodi. Il modo più veloce per piattare è spesso usare-1per una dimensione.Codice:
F_flat = F.view(-1) oF_flat = F.reshape(50)